Map 和 Set

概述

在 JavaScript 中,Map 和 Set 是两种非常有用的数据结构。它们分别用于存储键值对和唯一值的集合。与传统的对象和数组相比,Map 和 Set 提供了更灵活和高效的操作方式。

Map

什么是 Map?

Map 是一种键值对的集合,其中键和值可以是任意类型的数据。与对象不同,Map 中的键可以是任意数据类型,而不仅仅是字符串或符号。

创建和使用 Map

创建 Map

你可以通过 new Map() 来创建一个空的 Map:

const myMap = new Map();

或者通过传递一个二维数组来初始化 Map:

const myMap = new Map([
  ['key1', 'value1'],
  ['key2', 'value2']
]);

添加和获取元素

你可以使用 set 方法来添加键值对,使用 get 方法来获取值:

myMap.set('key3', 'value3');
console.log(myMap.get('key3')); // 输出: value3

检查键是否存在

使用 has 方法来检查某个键是否存在于 Map 中:

console.log(myMap.has('key1')); // 输出: true
console.log(myMap.has('key4')); // 输出: false

删除元素

使用 delete 方法来删除某个键值对:

myMap.delete('key1');
console.log(myMap.has('key1')); // 输出: false

清空 Map

使用 clear 方法来清空整个 Map:

myMap.clear();
console.log(myMap.size); // 输出: 0

遍历 Map

你可以使用 for...of 循环来遍历 Map 中的键值对:

for (let [key, value] of myMap) {
  console.log(`${key} = ${value}`);
}

或者使用 forEach 方法:

myMap.forEach((value, key) => {
  console.log(`${key} = ${value}`);
});

Set

什么是 Set?

Set 是一种存储唯一值的集合。与数组不同,Set 中的元素是唯一的,不会重复。

创建和使用 Set

创建 Set

你可以通过 new Set() 来创建一个空的 Set:

const mySet = new Set();

或者通过传递一个数组来初始化 Set:

const mySet = new Set([1, 2, 3, 4]);

添加和删除元素

你可以使用 add 方法来添加元素,使用 delete 方法来删除元素:

mySet.add(5);
console.log(mySet.has(5)); // 输出: true

mySet.delete(5);
console.log(mySet.has(5)); // 输出: false

检查元素是否存在

使用 has 方法来检查某个元素是否存在于 Set 中:

console.log(mySet.has(1)); // 输出: true
console.log(mySet.has(5)); // 输出: false

清空 Set

使用 clear 方法来清空整个 Set:

mySet.clear();
console.log(mySet.size); // 输出: 0

遍历 Set

你可以使用 for...of 循环来遍历 Set 中的元素:

for (let item of mySet) {
  console.log(item);
}

或者使用 forEach 方法:

mySet.forEach(item => {
  console.log(item);
});

实践练习

练习 1: 使用 Map 存储用户信息

创建一个 Map 来存储用户信息(用户名和年龄),并实现以下功能:

  1. 添加用户。
  2. 查找用户。
  3. 删除用户。
const users = new Map();

// 添加用户
users.set('Alice', 25);
users.set('Bob', 30);

// 查找用户
console.log(users.get('Alice')); // 输出: 25

// 删除用户
users.delete('Bob');
console.log(users.has('Bob')); // 输出: false

练习 2: 使用 Set 存储唯一数字

创建一个 Set 来存储一组唯一的数字,并实现以下功能:

  1. 添加数字。
  2. 检查数字是否存在。
  3. 删除数字。
const numbers = new Set();

// 添加数字
numbers.add(1);
numbers.add(2);
numbers.add(3);

// 检查数字是否存在
console.log(numbers.has(2)); // 输出: true

// 删除数字
numbers.delete(2);
console.log(numbers.has(2)); // 输出: false

总结

Map 和 Set 是 JavaScript 中非常有用的数据结构,它们提供了更灵活和高效的方式来存储和操作数据。通过本教程,你应该已经掌握了如何创建、使用和遍历 Map 和 Set,并能够在实际编程中应用这些知识。

希望你能通过实践练习进一步巩固所学内容,并在未来的编程中灵活运用 Map 和 Set。